package edu.upc.wib.service.impl;

import edu.upc.wib.dao.FavoritoDao;
import edu.upc.wib.entity.Favorito;
import edu.upc.wib.service.FavoritoService;
import edu.upc.wib.utilitarios.TorneoException;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 *
 * @author Jhonny
 */
@Service
public class FavoritoServiceImpl implements FavoritoService {

    private static Logger log = LoggerFactory.getLogger(FavoritoServiceImpl.class);
    @Autowired
    private FavoritoDao favoritoDao;

    @Override
    public Integer crear(Favorito favorito) throws TorneoException {
        log.info("Creando favorito");

        String msgError = "";

        if (favorito.getContendor1() != null) {

            if (favorito.getContendor2() != null) {
                
                if (favorito.getContendor1().getIdContendor() != favorito.getContendor2().getIdContendor()) {

                    if ((favorito.getGanador() == favorito.getContendor1().getIdContendor())
                            || (favorito.getGanador() == favorito.getContendor2().getIdContendor())) {

                        return favoritoDao.crear(favorito);

                    } else {
                        msgError = "El ganador no corresponde a los contendores";
                    }
                } else {
                    msgError = "Contendor 1 y 2 no pueden ser el mismo";
                }
            } else {
                msgError = "Contendor2 debe existir";
            }
        } else {
            msgError = "Contendor1 debe existir";
        }


        if (!msgError.isEmpty()) {
            log.error(msgError);
            throw new TorneoException(msgError);
        }

        return null;

    }

    @Override
    public List<Favorito> ListarPorTorneo(Integer idTorneo) {
        log.info("Listando favorito por torneo");
        return favoritoDao.ListarPorTorneo(idTorneo);
    }
}
